//仅仅反转字母
/*给你一个字符串 s ，根据下述规则反转字符串：

所有非英文字母保留在原有位置。
所有英文字母（小写或大写）位置反转。
返回反转后的 s 。
1 <= s.length <= 100
s 仅由 ASCII 值在范围 [33, 122] 的字符组成
s 不含 '\"' 或 '\\'
*/
class Solution {
public:
    string reverseOnlyLetters(string s) {
        int left = 0;
        int right = s.size() - 1;
        while (left < right) {
            while (left < right && (!((s[left] >= 'a' && s[left] <= 'z') ||
                                      (s[left] >= 'A' && s[left] <= 'Z')))) {
                left++;
            }
            while (left < right && (!((s[right] >= 'a' && s[right] <= 'z') ||
                                      (s[right] >= 'A' && s[right] <= 'Z')))) {
                right--;
            }
            if (left < right)
                swap(s[left], s[right]);
            left++;
            right--;
        }
        return s;
    }
};



//最大升序子数组和
/*给你一个正整数组成的数组 nums ，返回 nums 中一个 升序 子数组的最大可能元素和。

子数组是数组中的一个连续数字序列。

已知子数组 [numsl, numsl+1, ..., numsr-1, numsr] ，若对所有 i（l <= i < r），numsi  < numsi+1 都成立，则称这一子数组为 升序 子数组。注意，大小为 1 的子数组也视作 升序 子数组。
1 <= nums.length <= 100
1 <= nums[i] <= 100
*/
class Solution {
public:
    int maxAscendingSum(vector<int>& nums) {
        int max = nums[0];
        int sum = nums[0];
        for (int i = 1; i < nums.size(); i++) {
            if (nums[i] > nums[i - 1]) {
                sum += nums[i];
            } else {
                sum = nums[i];
            }
            if (max < sum)
                max = sum;
        }
        return max;
    }
};